package com.auth.client.config.auth;

import java.lang.annotation.*;

/**
 * java元注解 ： 用于描述注解的使用范围
 * @Target说明了Annotation所修饰的对象范围：Annotation可被用于
 * packages、types（类、接口、枚举、Annotation类型）、类型成员（方法、构造方法、成员变量、枚举值）、方法参数和本地变量（如循环变量、catch参数）。
 * 在Annotation类型的声明中使用了target可更加明晰其修饰的目标
 *
 * ElementType取值
 * METHOD 用于描述方法 Method declaration
 * TYPE 用于描述类、接口(包括注解类型) 或enum声明 Class, interface (including annotation type), or enum declaration
 * @author: mhSui 2020/07/01
 */
@Target({ElementType.METHOD,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface Auth {

    String value() default "";

    boolean mustAuthentication() default true;

    boolean onlyAuthentication() default false;

    String[] roles() default {};

    boolean inner() default false;

    String description() default "";
}
